#ifndef __CARIOU_LINARD_CAMERA_HH__
#define __CARIOU_LINARD_CAMERA_HH__

#include "film.h"
#include "geometry.h"

class Camera    //valid
{
    protected:

        Vector3D base[3];
        Point3D  position;
        Point3D  sceneCenter;
        double   angleX;
        double   angleY;

        void precomputeBase();


    public:

        Camera();
        virtual ~Camera();
        Camera(const Camera &);
        Camera& operator=(const Camera &);

        Camera(const Point3D &, const Point3D &,const double &, const double &);

        virtual void setPosition(const Point3D &);
        virtual void setSceneCenter(const Point3D &);
        virtual void setViewAngles(const double &, const double &);

        virtual Point3D getPosition() const;
        virtual Point3D getSceneCenter() const;
        virtual double  getWidthAngle() const;
        virtual double  getHeightAngle() const;

        virtual Vector3D getViewVector() const;

};

#endif
